package it.crosato.stage.server.model.actions;

import it.crosato.stage.shared.objects.Comparison;
import it.crosato.stage.shared.objects.EntityDefinition;
import it.crosato.stage.shared.objects.SelectionLists;

import java.util.Vector;

public interface IActions {

	/**
	 * Ritorna le liste degli organismi e delle vie metaboliche disponibili
	 * @param time tempo di scadenza nella banca dati interna
	 * @return l'oggetto contenente le due liste
	 */
	public abstract SelectionLists getLists(long time);
	
	/**
	 * Effettua il colcolo relativo al confronto e ne ritorna il risultato
	 * @param selectedOrganisms lista degli organismi selezionati
	 * @param selectedPathways lista delle vie metaboliche generali selezionate
	 * @param enzymesSet indica se considerare gli enzimi nel calcolo con gli insiemi
	 * @param enzymesInv indica se considerare gli enzimi nel calcolo con le reti di Petri
	 * @param factor fattore di influenza del modello con le reti di Petri
	 * @param time tempo di scadenza nella banca dati interna
	 * @param sessionId id della sessione, per distinguere i files di 4ti2 di ogni utente
	 * @param applicationPath per memorizzare i files di 4ti2 in una cartella dell'applicazione
	 * @return l'oggetto contenente tutti i dettagli del confronto
	 */
	public abstract Comparison compare(Vector<EntityDefinition> selectedOrganisms,
			Vector<EntityDefinition> selectedPathways, boolean enzymesSet, boolean enzymesInv,
			double factor, long time, String sessionId, String applicationPath);
}